<?php
/**
 * Created by PhpStorm.
 * User: zhenghao
 * Date: 2015/6/19
 * Time: 9:21
 */

require_once __DIR__."/../bo/ProductBO.php";

/**
 * Class ProductServer
 * 产品模块 接口方法
 */
class ProductServer extends Server {

    private $json_data=array("code" => 200,"msg" => "success");

    //获取所有主产品最新价格详情
    function mainPriceList(){

        //获取主产品编号集
        $p_conf= include_once __DIR__."/../conf/product_conf.php";

        $pid_array=$p_conf["main_products"];

        //查询产品价格信息
        $products=ProductBO::lastPriceInfoByArray($pid_array);

        $this->json_data["products"]=$products;

        $this->showJsonData($this->json_data);

    }


    //获取主产品中价格当日已更新的产品价格详情
    function mainPriceIsUpdate(){

        //获取主产品编号集
        $p_conf= include_once __DIR__."/../conf/product_conf.php";

        $pid_array=$p_conf["main_products"];

        //查询产品价格信息
        $products=ProductBO::mainPriceIsUpdate($pid_array);

        $this->json_data["products"]=$products;

        $this->showJsonData($this->json_data);

    }


    //获取主产品中价格当日未更新的产品价格详情
    function mainPriceNotUpdate(){

        //获取主产品编号集
        $p_conf= include_once __DIR__."/../conf/product_conf.php";

        $pid_array=$p_conf["main_products"];

        //查询产品价格信息
        $products=ProductBO::mainPriceNotUpdate($pid_array);

        $this->json_data["products"]=$products;

        $this->showJsonData($this->json_data);

    }



    //获取指一组产品的最新价格详情，接受产品编号字符串 "201102250619,201102250618,201102250620,201102250245"
    //返回结果包含所有产品的名称、编号、价格、均价、振幅、规格、产地/牌号、最后更新时间
    //用于指定专区下小分类对应产品最新价格查询
    function lastPriceInfoByArray(){

        //获取产品编号字符串
        if(checkEmptyParameter("ids")) throw new Exception("product ids is null");

        $str_product_ids=$_REQUEST["ids"];

        //字符串转换为数组
        $ids_array=explode(",",$str_product_ids);

        if(empty($ids_array)) throw new Exception("product ids format is error");

        //按产品编号查询
        $product_array=ProductBO::lastPriceInfoByArray($ids_array);

        //返回查询结果
        $this->json_data["products"]=$product_array;

        $this->showJsonData($this->json_data);

    }


    //获取指定产品最新价格详情，包含产品价格历史
    function lastPriceInfo(){

        //获取产品编号
        if(checkEmptyParameter("id")) throw new Exception("product id is null");

        $id=$_REQUEST["id"];

        //查询产品详情
        $info=ProductBO::lastPriceInfo($id);

        if(empty($info)) throw new Exception("not found the product by id:$id");

        //返回查询结果
        $this->json_data["info"]=$info;

        $this->showJsonData($this->json_data);

    }


    //获取指定产品SMM价格历史，指定时间区间 （时间曲线上取当日平均价）
    function priceHistory(){

        //获取产品编号
        if(checkEmptyParameter("id")) throw new Exception("product id is null");

        $id=$_REQUEST["id"];

        //检查开始时间，结束时间
        if(checkEmptyParameter("begin_date")) throw new Exception("begin_date is null");

        $begin_date=$_REQUEST["begin_date"];

        //检查结束时间
        if(checkEmptyParameter("end_date")) throw new Exception("end_date is null");

        $end_date=$_REQUEST["end_date"];

        //结束时间必须大于开始时间
        if(!($end_date>$begin_date)) throw new Exception("结束日期必须大于开始日期");

        //查询产品历史价格（SMM历史价格）
        $history=ProductBO::priceHistory($id,$begin_date,$end_date);

        if(empty($history)) throw new Exception("not found the product price history by id:$id");

        //返回查询结果
        $this->json_data["price_history"]=$history;

        $this->showJsonData($this->json_data);

    }


    //获取指定产品shfe价格历史，指定时间区间 （时间曲线上取当日收盘价）
    function priceShfeHistory(){

        //获取产品编号
        if(checkEmptyParameter("id")) throw new Exception("product id is null");

        $id=$_REQUEST["id"];

        //检查开始时间，结束时间
        if(checkEmptyParameter("begin_date")) throw new Exception("begin_date is null");

        $begin_date=$_REQUEST["begin_date"];

        //检查结束时间
        if(checkEmptyParameter("end_date")) throw new Exception("end_date is null");

        $end_date=$_REQUEST["end_date"];

        //结束时间必须大于开始时间
        if(!($end_date>$begin_date)) throw new Exception("结束日期必须大于开始日期");

        //查询产品历史价格（SMM历史价格）
        $history=ProductBO::priceShfeHistory($id,$begin_date,$end_date);

        if(empty($history)) throw new Exception("not found the product price history by id:$id");

        //返回查询结果
        $this->json_data["price_history"]=$history;

        $this->showJsonData($this->json_data);

    }


    //获取指定产品lme价格历史，指定时间区间 （时间曲线上取当日收盘价）
    function priceLmeHistory(){

        //获取产品编号
        if(checkEmptyParameter("id")) throw new Exception("product id is null");

        $id=$_REQUEST["id"];

        //检查开始时间，结束时间
        if(checkEmptyParameter("begin_date")) throw new Exception("begin_date is null");

        $begin_date=$_REQUEST["begin_date"];

        //检查结束时间
        if(checkEmptyParameter("end_date")) throw new Exception("end_date is null");

        $end_date=$_REQUEST["end_date"];

        //结束时间必须大于开始时间
        if(!($end_date>$begin_date)) throw new Exception("结束日期必须大于开始日期");

        //查询产品历史价格（SMM历史价格）
        $history=ProductBO::priceLmeHistory($id,$begin_date,$end_date);

        if(empty($history)) throw new Exception("not found the product price history by id:$id");

        //返回查询结果
        $this->json_data["price_history"]=$history;

        $this->showJsonData($this->json_data);

    }


    //获得指定产品上海期货（shfe）最新价格，用于查询专区期货价格
    function shfePriceById(){

        //获取产品编号
        if(checkEmptyParameter("id")) throw new Exception("product id is null");

        $id=$_REQUEST["id"];

        //查询产品期货价格
        $price=ProductBO::shfePriceById($id);

        if(empty($price)) throw new Exception("not found future info by id:$id");

        $this->json_data["price"]=$price;

        $this->showJsonData($this->json_data);
    }


    //获取指定产品伦敦期货（lme）最新价格，用于查询专区期货价格
    function lmePriceById(){

        //获取产品编号
        if(checkEmptyParameter("id")) throw new Exception("product id is null");

        $id=$_REQUEST["id"];

        //查询产品期货价格
        $price=ProductBO::lmePriceById($id);

        if(empty($price)) throw new Exception("not found future info by id:$id");

        $this->json_data["price"]=$price;

        $this->showJsonData($this->json_data);
    }


    //获取一组产品上海期货最新价格
    function shfePriceByArray(){

        //产品编号列表来自配置文件
        $p_conf=include_once __DIR__."/../conf/product_conf.php";

        $product_id_array=$p_conf["future_products"];

        //查询最新价格
        $prices=ProductBO::shfePriceByArray($product_id_array);

        $this->json_data["prices"]=$prices;

        $this->showJsonData($this->json_data);
    }


    //获取一组产品评伦敦期货最新价格
    function lmePriceByArray(){

        //产品编号列表来自配置文件
        $p_conf=include_once __DIR__."/../conf/product_conf.php";

        $product_id_array=$p_conf["future_products"];

        //查询最新价格
        $prices=ProductBO::lmePriceByArray($product_id_array);

        $this->json_data["prices"]=$prices;

        $this->showJsonData($this->json_data);
    }


    //获取指定产品类型上海期货实时价格
    function shfeRealTimePrice(){

        //获取产品名称列表，从配置文件中读取
        $p_conf=include_once __DIR__."/../conf/product_conf.php";

        $type_array=$p_conf["shfe_RealTime_type"];

        //查询实时价格
        $prices=ProductBO::shfeRealTimePrice($type_array);

        $this->json_data["prices"]=$prices;

        $this->showJsonData($this->json_data);

    }


    //获取指定产品类型（CU,AL,NL....）的沪伦比值（最后30天）
    function getLastSpecificValueForFuture(){

        //获取产品类型
        if(checkEmptyParameter("type")) throw new Exception("product type is null");

        $type=$_REQUEST["type"];

        //获取数据
        $values=ProductBO::getLastSpecificValueForFuture($type);

        $this->json_data["values"]=$values;

        $this->showJsonData($this->json_data);

    }


    //获取指定币种与人名币的最新汇率
    function getRate(){

        //获得币种编号
        if(checkEmptyParameter("id")) throw new Exception("id is null");

        $id=$_REQUEST["id"];

        //获取信息
        $rate=ProductBO::getRateById($id);

        $this->json_data["rate"]=$rate;

        $this->showJsonData($this->json_data);

    }

    //获得1美元兑换人民币的最新汇率
    function getUSDRate(){

        /**
         * 币种对应编号
            美元	201102250100
            港币	201102250086
            100日元 201102250434
            欧元	201102250024
            英镑	201102250125
         */

        $id=201102250100;

        //获取信息
        $rate=ProductBO::getRateById($id);

        $this->json_data["rate"]=$rate;

        $this->showJsonData($this->json_data);

    }


}